// 父类 | 基类
export class Animal {
	// 静态属性和方法
	static oo = 123
	static say() {
		console.log('静态方法say')
	}
	// 实例属性
	// 公共属性：都可以访问
	public name: string
	// 保护属性：属性“methods”受保护，只能在类“Animal”及其子类中访问
	protected methods: string
	// 私有属性： 属性“sex”为私有属性，只能在类“Animal”中访问。
	private sex: string = '母'
	// 构造器
	public constructor(name: string, methods: string) {
		this.name = name
		this.methods = methods
	}
	// 原型方法： 被所有实例所共享
	public say() {
		console.log(`我是${this.name}, 我会${this.methods}`)
	}
}
// 子类 | 派生类
class Cat extends Animal {
	public age: number
	public constructor(name: string, methods: string, age: number) {
		// 必须调用父类 constructor
		super(name, methods);
		this.age = age
	}
}



// 实例化
const p1 = new Cat('猫', '喵喵喵', 2)
const p2 = new Animal('狗', "汪汪汪")

console.log(p1, p2)

// p1.methods
// p1.sex